1
La veritร  fisica delle liste di Python: struttura della memoria e indirizzamento ArrayList
AI028Lesson 8
00:00

Le liste di Python a livello sottostante non sono semplici liste concatenate, ma organizzate in modo altamente strutturato ArrayList. La veritร  fondamentale รจ che occupa uno spazio contiguo in memoria. Qui non vengono memorizzati gli oggetti stessi, ma i riferimenti agli oggetti riferimenti๏ผˆๅœจ C ่ฏญ่จ€ๅฑ‚้ขๅณไธบๆŒ‡้’ˆ๏ผ‰ใ€‚่ฟ™็ง่ฎพ่ฎกๅฎž็Žฐไบ†ๅผ‚ๆž„ๆ•ฐๆฎ็š„็ปŸไธ€็ฎก็†๏ผŒๆ— ่ฎบๆ˜ฏไธ‰ๅŽŸ่‰ฒ๏ผˆRGB๏ผ‰ๅ…ƒ็ป„่ฟ˜ๆ˜ฏๅคๆ‚็š„ๅŠ ๅฏ†ๅฏ†้’ฅ (Key)๏ผŒ้ƒฝๅช้œ€ๅ ๆฎไธ€ไธชๅ›บๅฎšๅคงๅฐ็š„ๆŒ‡้’ˆไฝใ€‚

Punt 0Punt 1Punt 3Spostamento degli elementi (Inserimento)

Matematica dell'indirizzamento e compromesso prestazioni

  • $O(1)$ accesso casuale: tramite la formula $\text{indirizzo elemento} = \text{indirizzo iniziale} + \text{indice} \times \text{dimensione}$, il CPU puรฒ localizzare istantaneamente.
  • Analisi ammortizzata (Amortized Analysis): utilizzando una strategia di sovracapacitร , anche se un singolo inserimento potrebbe essere $O(n)$, il costo totale รจ $n + \sum_{j=0}^{\lg n} 2^j = 3n$, garantendo una performance media di $O(1)$ per l'aggiunta.
  • Limitazioni di inserimento: come mostrato nella Figura 8-2, nell'inserimento in qualsiasi posizione devono essere spostati tutti i puntatori successivi, con complessitร  $O(n)$.
Confronto tra algoritmi
A differenza dell'accesso indice in ArrayList ($O(1)$), la ricerca in una skip list ha complessitร  temporale $O(\log n)$. Il fondamento dell'algoritmo RSA โ€” l'algoritmo euclideo โ€” si basa sul fatto che $gcd(a,0)=a$. Tutti questi algoritmi operano in questo piccolo spazio di memoria.